# -*- coding:utf-8 -*-
"""
@Time:  2024/5/11 21:26
@Auth:  Mrs.Gou 
@Function:  字符串处理
"""

# 1.字符串处理算法
# 1.1 分割
# 以某个子串为节点，把字符串分成若干个子串，存在一个列表里面，这个节点会被丢弃。切割甘蔗一样，把节与节之间的好吃的留下，节就扔掉了
names = 'will, roy, tufei, kaka, zhangxin'
# 分割
name_list = names.split(', ')
print(name_list)

# url格式参数
# 分析：这种格式其实使用&分割了键值对，用 = 分割了键和值、（字符串----》字典）
params = 'username=Will&password=111111&15888888888'

# 定义一个字典，用来存参数
params_dict = {}

# 通过&切割获得键值对
key_values = params.split('&')
print(key_values)

# 遍历，处理所有键值对
for key_value in key_values:
    # 切割获得键和值的列表
    key_value = key_value.split('=')
    print(key_value)
    # 处理没有值的情况
    if len(key_value) > 1:
        # 如果键和值都存在，就添加到字典
        params_dict[key_value[0]] = key_value[1]
    else:
        # 如果没有值，值默认为None
        params_dict[key_value[0]] = None

# 得到一个字典
print(params_dict)

# 拼接 （列表----》字符串）
names = ','.join(name_list)
print(names)

# 定义一个列表存所有的键值拼接后的字符串
params_str_list = []
# 先拼接键和值
for key, value in params_dict.items():
    # 如果值不为空
    if not value is None:
        params_str_list.append('='.join([key, value]))
    else:
        # 如果为空，就不拼了
        params_str_list.append(key)
# 得到一个列表
print(params_str_list)
# 再把所有键值对用&拼接
params = '&'.join(params_str_list)
# 得到一个字符串
print(params)

